import java.util.*;



public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int T = sc.nextInt();
        for (int i = 0; i < T; i++) {
            int N = sc.nextInt();
            T(N);
        }
    }
    public static void T(int n) {
        StringBuffer str = new StringBuffer();
        int a = 1;
        int b = 0;
        for(int i=0;i<n;i++){
            a = a +i;
            b = a;
            for(int j=0;j<n-i;j++){
                str.append(b+" ");
                b = b+ j+i+2;
            }
            System.out.println(str.toString().trim());
            str = new StringBuffer();
        }

    }
//    public static void main(String[] args) {
//        Scanner sc = new Scanner(System.in);
//        int T = sc.nextInt();
//        for (int i = 0; i < T; i++) {
//            int N = sc.nextInt();
//            int sum = 0;
//            for (int j = 0; j < N; j++) {
//                sum = j + sum;
//            }
//            int[][] arr = new int[N][N];
//            int n = 1;
//            while (n < sum) {
//
//
//                n++;
//            }
//
//
//        }
//    }
//
//    public static void Input(int i, int[][] arr) {
//        if (i == 1) {
//            arr[0][0] = 1;
//        }
//        for (int j = 1; j < arr.length; j++) {
//            arr[i-1][0] = i;
//            arr[i-2][2] = 1;
//        }
//    }
}
//   public static class TreeNode {
//        char val;
//        TreeNode left;
//        TreeNode right;
//
//        TreeNode(char x) {
//            val = x;
//        }
//    }
//
//
//        // 构建二叉树
//        public static TreeNode buildTree(String preorder) {
//            return buildTree(preorder, 0);
//        }
//
//        private static TreeNode buildTree(String preorder, int index) {
//            if (index >= preorder.length() || preorder.charAt(index) == '#') {
//                return null;
//            }
//
//            // 创建当前节点
//            TreeNode node = new TreeNode(preorder.charAt(index));
//
//            // 递归构建左子树和右子树
//            // 假设每个节点后面紧跟着的是左子树，然后是右子树
//            int leftTreeSize = 0;
//            for (int i = index + 1; i < preorder.length(); i++) {
//                if (preorder.charAt(i) == '#') {
//                    leftTreeSize++;
//                } else {
//                    break;
//                }
//            }
//
//            // 左子树的大小加1是因为当前索引指向根节点
//            node.left = buildTree(preorder, index + 1 + leftTreeSize);
//            node.right = buildTree(preorder, index + 1 + leftTreeSize + 1);
//
//            return node;
//        }
//
//        public static void main(String[] args) {
//            String preorder = "ABDG##HI####CE#J##F##";
//            TreeNode root = buildTree(preorder);
//            order(root);
//            // 这里可以添加代码来遍历或操作构建的二叉树
//        }
//
//
//    public static void order(TreeNode root){
//        Queue<TreeNode> queue=new LinkedList<>();
//        if(root==null){
//            return;
//        }
//        queue.offer(root);
//        while (!queue.isEmpty()){
//            TreeNode cur=queue.poll();
//            System.out.print(cur.val+" ");
//            if(cur.left!=null){
//                queue.add(cur.left);
//            }
//            if (cur.right!=null){
//                queue.add(cur.right);
//            }
//        }
//
//    }



